//
//  Problem83.swift
//  TestProject
//
//  Created by 武侠 on 2021/5/25.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素 只出现一次 。
 返回同样按升序排列的结果链表。
 
 示例 1：
     输入：head = [1,1,2]
     输出：[1,2]
 示例 2：
     输入：head = [1,1,2,3,3]
     输出：[1,2,3]
 提示：
     链表中节点数目在范围 [0, 300] 内
     -100 <= Node.val <= 100
     题目数据保证链表已经按升序排列
 */
@objcMembers class Problem83: NSObject {
    func solution() {
        let head = ListNode(1)
        head.next = ListNode(1)
        head.next?.next = ListNode(2)
        head.next?.next?.next = ListNode(2)
        head.next?.next?.next?.next = ListNode(2)
        head.next?.next?.next?.next?.next = ListNode(3)
        
        print(printNode(deleteDuplicates(head)))
    }
    func deleteDuplicates(_ head: ListNode?) -> ListNode? {
        if head == nil || head?.next == nil {
            return head
        }
        
        var pre = head
        var node = head?.next
        while node != nil {
            if node!.val == pre!.val {
                pre?.next = node?.next
            } else {
                pre = node
            }
            node = node?.next
        }
        return head
    }
}
